[리트코드]]_238.Productof Araay Expect Self


문제 주소

https://leetcode.com/problems/product-of-array-except-self/

My Solution

class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        out = []

        # 자기 자신을 제외하고 왼쪽 곱셈
        p = 1
        for i in range(len(nums)):
            out.append(p)
            p *= nums[i]

        # 왼쪽 곱셈 결과에 오른쪽 곱셈 결과
        p = 1
        for i in range(len(nums) - 1, -1, -1):
            out[i] *= p
            p *= nums[i]

        return out

풀이 방법

나눗셈을 하지 않고 O(n)에 풀이하라는 제약 조건이 있었는데, 이 말은 미리 전체 곱셈 값을 구해놓고 자기 자신을 나눗셈 하지말라는 뜻이다.
그렇다면 풀이 방법은 자기 자신을 제외하고 왼쪽의 곱셈 결과와 오른쪽의 곱셈 결과를 곱해야 한다. (주석 참고)


Hello, I'm@nickhealthy
개발자를 꿈꾸고, 파이썬과 클라우드에 관심이 많은 비전공자

Github